#!/usr/bin/python3

import os, sys, subprocess

def getfilelist(paths):
  '''使用 find 命令找出所有链接数大于1的文件，返回此列表'''
  out = subprocess.check_output(
    ['find'] + paths + ['-type', 'f', '-links', '+1'],
    stderr = subprocess.DEVNULL,
    text = True,
  )
  return out.splitlines()

def findsamefile(l):
  '''找出 l 中的文件中，哪些是同一文件'''
  ret = []
  while l:
    curfile = l[0]
    ret.append([curfile])
    for i in l[1:]:
      if os.path.samefile(curfile, i):
        ret[-1].append(i)
        l.remove(i)
    del l[0]

  return ret

def print_result(l):
  for i in l:
    for j in i:
      print(j)
    print()

if __name__ == '__main__':
  if len(sys.argv) < 2:
    print('用法：%s 路径 [...]' % os.path.basename(sys.argv[0]),
        file=sys.stderr)
    sys.exit(1)

  l = getfilelist(sys.argv[1:])
  result = findsamefile(l)
  print_result(result)

